const { userRegister, userLogin, checkToken} =require('../http/api.js')

//封装一些登录鉴权的方法

//注册的方法
function register(page) {
  console.log('注册')
  let _this=this;
  wx.login({
    success(res) {
      console.log('wx.login:',res);
      let code=res.code;

      //获取用户信息，得到iv,encryptedData...
      wx.getUserInfo({
        success(res) {
           console.log('登录中获取用户信息：',res)
          let { iv, encryptedData}=res;
          //调用API工厂提供注册接口完成腾讯用户信息写入公司后台数据库
          userRegister({ code, iv, encryptedData}).then(res=>{

              console.log('注册成功返回的结果：',res)
              //注册成功，开始登录
              login(page);

          })
        }
      })


    }
  })

}

//登录的方法
function login(page) {
  console.log('调用登录方法')
  wx.login({
    success(res) {
      let code=res.code;
      //开始调用API工厂（你们的公司后台封装的接口）提供的登录接口
      userLogin(code).then(res=>{
        console.log('登录成功返回的信息：：：：：：',res)
        if(res.code!==0) {
          wx.showToast({
            title: '登录信息有误',
          })
          return;
        }

        let { token,uid}=res.data;
        wx.setStorageSync('token', token)
        wx.setStorageSync('uid', uid)

        if(page) {
          //手动刷新我的页面，page则当前代表的是我的页面
          page.onShow()
        }
      })

    }
  })


}


//退出登录
function userloginOut() {
  wx.removeStorageSync('token')
  wx.removeStorageSync('uid')
}

//检测微信登录态方法
async function checkSession() {

    return new Promise((resolve,reject)=>{

        wx.checkSession({
          success() {
            resolve(true)
          },
          fail() {
            resolve(false)
          }
        })


    })


}


//检测登录态或toke是否有效
async function checkHasLogin(token) {
   //return new Promise()
   
   //检测微信登录态（seesion_key）是否失效
   const logined=await checkSession()
  if (!logined) {
    wx.removeStorageSync('token')
    return false;
  }


   //检测token是否失效
  const isToken=await checkToken(token)
  console.log('isToken:::::',isToken)
  if(isToken.code!==0) {
    wx.removeStorageSync('token')
    return false;
  }


  return true;
   
}

module.exports={
  register,
  login,
  userloginOut,
  checkHasLogin,

}

